home *** CD-ROM | disk | FTP | other *** search
- #include <stddef.h>
- #include <aes.h>
-
- #define FALSE 0
- #define TRUE 1
-
- int rsrc_gobject(RSHDR *rsc, int re_gtype, int re_gindex, void **gaddr )
- {
- *gaddr = NULL;
- switch (re_gtype)
- {
- case R_TREE :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_ntree))
- {
- *gaddr = ((OBJECT**)(rsc->rsh_trindex + (long)rsc))[re_gindex];
- return(TRUE);
- }
- break;
- case R_OBJECT :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nobs))
- {
- *gaddr = (OBJECT*)(rsc->rsh_object + (long)rsc + sizeof(OBJECT)*re_gindex);
- return(TRUE);
- }
- break;
- case R_TEDINFO :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
- {
- *gaddr = (TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex);
- return(TRUE);
- }
- break;
- case R_ICONBLK :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
- {
- *gaddr = (ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex); /* 34 = (sizeof(ICONBLK)-2) */
- return(TRUE);
- }
- break;
- case R_BITBLK :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nbb))
- {
- *gaddr = (BITBLK*)(rsc->rsh_bitblk + (long)rsc + sizeof(BITBLK)*re_gindex);
- return(TRUE);
- }
- break;
- case R_STRING :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nstring))
- {
- *gaddr = (char**)(rsc->rsh_string + (long)rsc + sizeof(void*)*re_gindex);
- return(TRUE);
- }
- break;
- case R_IMAGEDATA:
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nimages))
- {
- *gaddr = (char**)(rsc->rsh_imdata + (long)rsc + sizeof(void*)*re_gindex);
- return(TRUE);
- }
- break;
- case R_OBSPEC :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nobs))
- {
- *gaddr = (void*)((OBJECT*)(rsc->rsh_object + (long)rsc + sizeof(OBJECT)*re_gindex))->ob_spec.index;
- return(TRUE);
- }
- break;
- case R_TEPTEXT :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
- {
- *gaddr = ((TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex))->te_ptext;
- return(TRUE);
- }
- break;
- case R_TEPTMPLT :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
- {
- *gaddr = ((TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex))->te_ptmplt;
- return(TRUE);
- }
- break;
- case R_TEPVALID :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nted))
- {
- *gaddr = ((TEDINFO*)(rsc->rsh_tedinfo + (long)rsc + sizeof(TEDINFO)*re_gindex))->te_pvalid;
- return(TRUE);
- }
- break;
- case R_IBPMASK :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
- {
- *gaddr = ((ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex))->ib_pmask; /* 34 = (sizeof(ICONBLK)-2) */
- return(TRUE);
- }
- break;
- case R_IBPDATA :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
- {
- *gaddr = ((ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex))->ib_pdata; /* 34 = (sizeof(ICONBLK)-2) */
- return(TRUE);
- }
- break;
- case R_IPBTEXT :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nib))
- {
- *gaddr = ((ICONBLK*)(rsc->rsh_iconblk + (long)rsc + 34UL*re_gindex))->ib_ptext; /* 34 = (sizeof(ICONBLK)-2) */
- return(TRUE);
- }
- break;
- case R_BIPDATA :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nbb))
- {
- *gaddr = ((BITBLK*)(rsc->rsh_bitblk + (long)rsc + sizeof(BITBLK)*re_gindex))->bi_pdata;
- return(TRUE);
- }
- break;
- case R_FRSTR :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nstring))
- {
- *gaddr = (char**)(rsc->rsh_frstr + (long)rsc + sizeof(void*)*re_gindex);
- return(TRUE);
- }
- break;
- case R_FRIMG :
- if ((re_gindex >= 0) && (re_gindex < rsc->rsh_nimages))
- {
- *gaddr = (char**)(rsc->rsh_frimg + (long)rsc + sizeof(void*)*re_gindex);
- return(TRUE);
- }
- }
- return(FALSE);
- }
-